package com.hzit.servlet.emp;

import com.hzit.bean.Emp;
import com.hzit.dao.EmpDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet(name = "findEmpServlet", urlPatterns = "/emp/all")
public class FindEmpServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1.设置编码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");


        //2.调用jdbc获取emp数据
        EmpDao empDao = new EmpDao();


        List<Emp> empList = null;
        //获取请求参数，根据参数再来决定调用哪些方法
        String searchType = request.getParameter("search_type");
        String searchVal = request.getParameter("search_val");

        //分页参数   如果不写：默认查找第一页，一页 两条记录
        String p = request.getParameter("page");
        String ps = request.getParameter("pageSize");

        int page = p == null ? 1 : Integer.parseInt(p);
        int pageSize = ps == null ? 2 : Integer.parseInt(ps);

        long count = 0;

        if (searchVal != null && !searchVal.equals("")) {
            empList = empDao.findSearch(searchType, searchVal, page, pageSize);
        } else {
            count = empDao.findCount();
            empList = empDao.findAll(page, pageSize);
        }


        //3.请求jsp帮助，并且把信息存放到公共区域
        request.setAttribute("empList", empList); //设置域对象的属性值
        //request.getAttribute("empList"); //获取域对象属性值

        //4.查询出总数量，计算出分页的页码。前端再来显示按钮


        //如果不能整除，多一页出来
        long pageCount = count % pageSize == 0 ? count / pageSize : count / pageSize + 1;
        request.setAttribute("pageCount", pageCount);


        //request:只在一次请求中有效
        //请求转发   /自动项目名称
        request.getRequestDispatcher("/jsp/EmpList.jsp").forward(request, response);

        //页面之间的跳转
        //1.请求转发 : 服务端行为。客户端只需要发起一次请求
        //2.重定向  : 客户端行为，至少发起两次请求

        //使用请求转发
        //请求转发：/表示已经字段了项目名称，所以可以不写项目名称
        //重定向: /表示没有定义项目名，需要指定项目名称

        //response.setHeader("xxxx", "yyyy");
        //response.setStatus(201);

        //页面自动调 跳转到指定路径
        //重定向  客户端行为  /需要自己加装项目名称

        //String str = null;
        //System.out.println(str.length());

        //response.setHeader("Refresh", "5; url=/web_manage/jsp/EmpAdd.jsp");


        //3.响应到浏览器中 servlet输出，输出标签 太麻烦了
        // 可以借助:jsp 进行显示

//        PrintWriter writer = response.getWriter();
//        //writer.println(empList);
//        writer.println("<table border='1px' width='1000px' cellspacing='0px'>");
//        writer.println("<tr><th>员工编号</th><th>员工姓名</th><th>职位</th><th>上级编号</th><th>入职日期</th><th>工资</th><th>部门编号</th></tr>");
//        for (Emp emp : empList) {
//
//            writer.println("<tr>");
//            writer.println("<td>" + emp.getEmpno() + "</td>");
//            writer.println("<td>" + emp.getEname() + "</td>");
//            writer.println("<td>" + emp.getJob() + "</td>");
//            writer.println("<td>" + emp.getMgr() + "</td>");
//            writer.println("<td>" + emp.getHireDate() + "</td>");
//            writer.println("<td>" + emp.getSal() + "</td>");
//            writer.println("<td>" + emp.getDeptno() + "</td>");
//            writer.println("</tr>");
//        }
//        writer.println("</table>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

